//
// Created by sjjmw on 3/24/2022.
//
#include "iostream"
#include "vector"
#include "list"
#include "algorithm"
#include "string"
#include "unordered_map"
#include "cmath"
#include<iomanip>
#include "string"
#include "map"
#include "list"
struct SFZ{
    std::string str;
    int get_year(){
        int y=0;
        for(int i=6;i<10;i++){
            y*=10;
            y+=str[i]-'0';
        }
        return y;
    }
    int get_month(){
        int y=0;
        for(int i=10;i<12;i++){
            y*=10;
            y+=str[i]-'0';
        }
        return y;
    }
    int get_day(){
        int y=0;
        for(int i=12;i<14;i++){
            y*=10;
            y+=str[i]-'0';
        }
        return y;
    }
};

bool cmp(SFZ s1,SFZ s2){
    auto y1=s1.get_year();
    auto y2=s2.get_year();
    if(y1>y2){
        return true;
    }else if(y1<y2){
        return false;
    }else{
        auto m1=s1.get_month();
        auto m2=s2.get_month();
        if(m1>m2){
            return true;
        }else if(m1<m2){
            return false;
        }else{
            auto d1=s1.get_day();
            auto d2=s2.get_day();
            if(d1>d2){
                return true;
            }else if(d1<d2){
                return false;
            }else{
                return s1.str>s2.str;
            }
        }
    }

}
struct Sol{
    std::vector<SFZ> vec;
    void handle(int n){
        vec.resize(n);
        for(int i=0;i<n;i++){
            std::cin>>vec[i].str;
        }
        std::sort(vec.begin(),vec.end(), cmp);
        for(auto &sfz:vec){
            std::cout<<sfz.str<<std::endl;
        }
    }
};
int main(){
    int a,b,c;
    while(std::cin>>a){
        Sol().handle(a);
    }

    return 0;
}